Word processing software typically implements an array of fonts that can be applied by the user to selected text. Each font gives the text a distinctive appearance. However, most fonts are fundamentally merely variants of the basic Courier font used since the advent of typewriters. Accordingly, such fonts are readily recognizable as word processing fonts. Recipients of materials prepared with those fonts typically appreciate that the materials were produced with a word processor or similar equipment.
On the other hand, some fonts have a scripted or printed style akin to handwriting. Such “handwriting fonts” attempt to imbue the printed text with the appearance of being handwritten. Many handwriting fonts fail to achieve this objective because the text still has, among other things, a rigid, linear and perfectly uniform appearance. Each of those attributes detracts from the naturalness and realism of the simulated handwriting.
Accordingly, methods have been developed to improve the appearance of handwriting fonts by making them aberrant, nonlinear or non-uniform in some respect. One method accepts as input an array of script characters, either from a handwriting sample or a programmer-developed font array. The leading and trailing ligatures of each character are examined, and the characters are grouped by ligature type: null, lower, upper, or diagonal. Appearance values are assigned to each ligature in a group, and an average ligature appearance value is determined. The ligatures in each class are reconfigured to have the corresponding average ligature appearance. Glyphs from a person's actual handwriting can thus be joined together to form character strings.
Other methods attempt to create handwriting that appears natural by developing a set of curved connectors for a given set of cursive characters. Each character includes a letter and an associated space. The characters in a text string are thus separated by spaces. Connectors are developed to bridge each combination and permutation of characters. The font is created by inserting the appropriate connectors between the cursive letters.
Still other techniques involve databases or “dictionaries” of handwritten character strings and letters. Character strings in a document are compared to the database and, where a combinational match is found, the dictionary string is substituted for the string in the document. Remaining letters are replaced with the handwritten letters in the dictionary. Connections between the individual letters and dictionary strings are created by application of curve fitting algorithms. Such algorithms extrapolate a “best fit” curve to connect adjacent characters based on each ligature's vector.
An improvement upon the foregoing methods is disclosed in co-pending U.S. application Ser. No. 09/342,858, entitled “Method of Producing Natural Handwriting,” filed Jun. 29, 1999, which is incorporated herein by reference. According to the described techniques, a baseline is established for each line of text, and positions each word or character of the line of text at a particular position with respect to the baseline for the line containing the word. A word or character may be positioned on, above, or below the baseline, for instance, by inserting an advance code in the text document before the word or character. The resulting character strings thus undulate above and below the horizontal baseline, as real handwriting. The artificial linearity of previous handwriting fonts is accordingly avoided.